package string

/**
串的基本数据结构，基本操作：
1、赋值操作
2、复制操作
3、判空操作
4、求串长
5、清空操作
6、销毁操作
7、串的联接
8、求子串
9、比较操作
*/
type SString struct {
	content []byte
}

func NewSString() *SString {
	return &SString{
		content: make([]byte, 0, 10),
	}
}

func (sstr *SString) StrContact(sourceStr string) {
	sstr.content = append(sstr.content, sourceStr...)
}

func (sstr *SString) StrContact2(sourceStr *SString) {
	sstr.content = append(sstr.content, sourceStr.content...)
}

/**
比较两个字符串
*/
func StrCompare(a, b *SString) int {
	for i := 0; i < len(a.content) && i < len(b.content); i++ {
		v1, v2 := a.content[i], b.content[i]
		if v1 != v2 {
			return (int)(v1 - v2)
		}
	}

	return len(a.content) - len(b.content)
}
